"""
每日充电：
第二周第三节课操作记录
"""
content = """
c:添加
# 列表append添加不会改变内存地址
>>> l = []
>>> id(l)
53415488
>>>
>>> l.append("a")
>>> l
['a']
>>> id(l)
53415488
>>>
===========================
# +=也不会改变内存地址
>>> l = ['a']
>>> id(l)
53415568
>>> l +=['b']
>>> l
['a', 'b']
>>> id(l)
53415568
>>>
===================================
# 列表乘法也不会改变列表内存地址
>>> a = 'a'
>>> id(a)
23275168
>>> l = [a]*10
>>> l
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> id(l)
53415648
>>> id(l[0])
23275168
>>> id(l[1])
23275168
# insert 的也不会改变内存地址
>>> id(l)
53415648
>>> l.insert(1,'a')
>>> l
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> l.insert(1,'b')
>>> l
['a', 'b', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> id(l)
53415648
>>>

列表乘法，insert,append元素的内存地址不变
=================================
r:查找
索引用法同字符串：
>>> l[0]
'a'
>>> l[1]
'b'
>>>

切片:
>>> id(l)
53415648
>>> l[0]
'a'
>>> l[1]
'b'
>>> b = l[0:1]
>>> id(b)
53415568
>>>

切片产生新列表,原来的列表还是原来的列表
>>> id(b[0])
23275168
>>>
元素的内存地址没变

index用法同字符串
>>> l.index("b")
1
>>>

=============================================================
u：更新，更改
>>> l
['a', 'b', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> l[0]=100
>>>
>>> l
[100, 'b', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>>
切片赋值,不会改变内存地址
>>> id(l)
53415648
>>> l[0:2]="B"
>>> id(l)
53415648
# 删除也不会改变原来列表的内存地址
>>> l
['B', 'a', 'a', 'a', 'a', 'a', 'a']
>>>
>>> l.pop()
'a'
>>> l
['B', 'a', 'a', 'a', 'a']
>>> id(l)
53415648
>>>
# clear()列表还是原来的列表
>>> l
['B', 'a', 'a', 'a', 'a']
>>> id(l)
53415648
>>> l.clear()
>>> l
[]
>>> id(l)
53415648
>>>


# 排序 
>>> l = [5,6,2,1,3,4]
>>> id(l)
53415488
>>> l.sort()
>>> l
[1, 2, 3, 4, 5, 6]
>>> id(l)
53415488
>>>
本身列表内存地址不变

>>> l += [7,8,9,1,2,3]
>>> id(l)
53415488

>>> l2 = sorted(l)
>>> id(l2)
53415648
换种方法排序，依然不变

# 倒叙reverse

>>> id(l)
53415488
>>> l.reverse()
>>> l
[3, 2, 1, 9, 8, 7]
>>> id(l)
53415488
>>>
内存地址不变

>>> id(l)
53415488
>>> l2 = reversed(l)
>>> l2
<list_reverseiterator object at 0x032F3770>
>>>
>>> l
[3, 2, 1, 9, 8, 7]
>>>
>>> l2 = reversed(l)
>>> l2
<list_reverseiterator object at 0x032F3710>
>>> l2 = list(reversed(l))
>>> l2
[7, 8, 9, 1, 2, 3]
>>> id(l2)
53445176
>>>
有坑啊，reversed的方法不同sorted,不仅用法有差异，返回的还是新列表

===========================================================================

turple 

元组不能增加，不能修改，不能删除，查询同列表


TypeError: 'tuple' object is not callable
>>> t[0]
'a'
>>> t[1]

元组切片产生新的元组，原来的还是原来的
>>> t[0:1]
('a',)


===================================
字典
c:通过键对值赋值
>>> id(dict)
23449792
>>>
>>>
>>> dict
{}
>>> dict[a] = 1
>>> dict
{'a': 1}
通过update

>>> dict_2 = {"c":3}
>>> dict.update(dict_2)
>>> dict
{'a': 1, 'b': 2, 'c': 3}
>>>

dict.setdefault('d',0)

r:查询
通过键查询，通过get方法查询，get方法默认返回none
>>> dict[a]
1
>>>

>>> dict.get('c')
3

返回所有keys()

>>> dict.keys()
dict_keys(['a', 'b', 'c'])
>>>

返回所有的值values(),返回的类型是特殊的类型
>>> dict.values()
dict_values([1, 2, 3])
>>>


返回所有键值对items()

>>> dict.items()
dict_items([('a', 1), ('b', 2), ('c', 3)])
>>>


u：改
键对值赋值

{'a': 9, 'b': 2, 'c': 3}

update:

>>> b={"b":8,"c":6}
>>> dict.update(b)
>>> dict
{'a': 9, 'b': 8, 'c': 6}
>>>

d：
通过键去除pop(key)
>>> dict
{'a': 9, 'b': 8, 'c': 6}
>>> dict.pop("c")
6
>>> dict
{'a': 9, 'b': 8}
>>>

清除字典 clear()
>>> dict.clear()
>>> dict
{}
>>>


===========================================
set

c:增加

add 方法
>>> s = set()
>>> s
set()
>>>
>>> s.add(a)
>>> s
{'a'}
>>>
update方法:

>>> b = set("b")
>>> b
{'b'}
>>>
>>> s.update(b)
>>> s
{'a', 'b'}
>>>

r:查询 in

>>> "b" in s
True
>>>

u:

合并求交集union
>>> c = {"a","b","d"}
>>>
>>> type(c)
<class 'set'>
>>>
>>> s
{'a', 'b'}
>>> id(s)
23975736
>>> s.union(c)
{'b', 'a', 'd'}
>>> s
{'a', 'b'}
>>> id(s)
23975736
>>>
s内存不变


d:discard缺失元素时不会报错, 而remove会报错

>>> c
{'a', 'd', 'b'}
>>> c.remove("b")
>>> c
{'a', 'd'}
>>>
>>> c.remove("b")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'b'
>>>

>>> c.discard("a")
>>> c
{'d'}
>>> c
{'d'}
>>> c.discard("a")
>>> c
{'d'}
>>>
pop()方法
无序删除元素，是无顺序的哈
>>> a = {1,2,3,4,5,6}
>>> a.pop()
1
>>> a.pop()
2
>>> a.pop()
3
>>> a.pop()
4
>>> a.pop()
5
>>>


"""
output = open("第二周第3节课作业.txt", "a", encoding="utf-8")
# 正式写入文件
output.write(content)
# 关闭文件句柄
output.close()